home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok82.lha / Mini / Mini.LiesMich < prev    next >
Text File  |  1993-08-15  |  3KB  |  117 lines

  1.  
  2.                Mini
  3.             ==========
  4.  
  5.  
  6. Dieses Verzeichnis enthält den Mini-Compiler, der im Amiga Programmieren
  7. Sonderheft (Markt&Technik) beschrieben wird.
  8.  
  9. Dieser Compiler dürfte mit weniger als 8KB Quelltext und 15KB Programmcode
  10. einer der kleinsten Compiler überhaupt sein. Dennoch enthält er alle Teile,
  11. die auch in einem 'großen' Compiler zu finden sind.
  12.  
  13. Die Sprache Mini:
  14.  
  15.   Mini ist eine sehr einfache Programmiersprache. Ein Mini-Programm
  16.   besteht aus dem Schlüsselwort PROGRAM, einem optionalen
  17.   Varialbendeklarationsteil, dem Schlüsselwort BEGIN, den Anweisungen
  18.   und END:
  19.   
  20.     PROGRAM [VarDeclaration] BEGIN {Statement} END
  21.   
  22.   Der Variablendeklarationsteil wird durch VAR eingeleitet und listet
  23.   die Namen der Variablen, die durch Kommas getrennt werden, auf:
  24.   
  25.     VAR Identifier { "," Identifier }
  26.   
  27.   An Anweisungen kennt Mini lediglich die Zuweisung eines Wertes an eine
  28.   Variable mit '=':
  29.   
  30.     Identifier "=" Expression
  31.   
  32.   eine einfache Schleife, die solange ausgeführt wird, wie der Ausdruck
  33.   hinter WHILE größer als null ist:
  34.   
  35.     WHILE Expression DO { Statement } END
  36.   
  37.   und eine Ausgabeanweisung für Zahlen
  38.   
  39.     PRINT Expression
  40.   
  41.   In einem Ausdruck können die Faktoren lediglich addiert oder subtrahiert
  42.   werden:
  43.   
  44.     [ "+" | "-" ] Factor { [ "+" | "-" ] Factor }
  45.   
  46.   Faktoren sind entweder Variablenbezeichner oder Konstanten:
  47.   
  48.     Identifier | Constant
  49.   
  50.   Die EBNF-Syntax von Mini ist in der Datei Grammatik.ebnf gegeben.
  51.   
  52.  
  53. Benutzung des Compilers:
  54.  
  55.   Der Compiler erwartet den Namen einer Mini-Quelltextdatei als Argument.
  56.   Die Ausgabe des Compilers ist der erzeugte Assembler-Code. Er sollte in
  57.   eine Datei umgeleitet werden. Bsp:
  58.  
  59.     Mini >Fibonacci.s Fibonacci.mini
  60.  
  61.   Nun muß der Text noch assembliert werden (etwa mit a68k von Fish 521):
  62.  
  63.     a68k Fibonacci.s
  64.  
  65.   zuletzt wird mit
  66.  
  67.     OLink FROM Fibonacci.o TO Fibonacci
  68.  
  69.   oder mit
  70.  
  71.     BLink Fibonacci.o TO Fibonacci
  72.  
  73.   ein ausführbares Programm erzeugt.
  74.  
  75.  
  76. Beispielprogramme:
  77.  
  78.   Fibonacci.mini:
  79.  
  80.     Berechnet die ersten 46 Fibonacci-Zahlen
  81.  
  82.   Fak.mini:
  83.  
  84.     Berechnet die Fakultäten 1! bis 12!
  85.  
  86.   GGT.mini:
  87.  
  88.     Berechnet den GGT zweier Zahlen (Konstanten im Programm)
  89.  
  90.   Prim.mini:
  91.  
  92.     Bestimmt die Primzahlen unter den Zahlen 1 bis 1000.
  93.  
  94.  
  95. Weitere Mini-Programme:
  96.  
  97.   Wie man an Prim.mini sieht, können mit dieser einfachen Sprache auch recht
  98.   Komplexe Dinge berechnet werden. Wer weitere Mini-Programme schreibt,
  99.   die interessante Dinge berechnen, der schicke mit bitte seine Mini-
  100.   Quelltexte.
  101.  
  102.   Theoretisch sind alle Berechnungen, die mit irgendeiner Programmiersprache
  103.   formuliert werden können, auch mit Mini lösbar. Schwierig ist es nur,
  104.   auch in Mini effiziente Lösungen zu finden.
  105.  
  106.  
  107. Viel Spaß mit dem Mini-Compiler!
  108.  
  109.  
  110. ---  Fridtjof.
  111.                                                              Fridtjof Siebert
  112.                                                                  Nobileweg 67
  113.                                                             7000 Stuttgart 40
  114.                                    siebert@minnie.informatik.uni-stuttgart.de
  115.                                                     fridi@amokst.adsp.sub.org
  116.  
  117.